home *** CD-ROM | disk | FTP | other *** search
-
-
-
- ccccfffffffftttt3333dddd,,,,zzzzfffffffftttt3333dddd((((3333FFFF)))) ccccfffffffftttt3333dddd,,,,zzzzfffffffftttt3333dddd((((3333FFFF))))
-
-
-
- NNNNAAAAMMMMEEEE
- ccccfffffffftttt3333dddd,,,, zzzzfffffffftttt3333dddd ---- 3D Complex-to-Complex Fast Fourier Transform.
-
- SSSSYYYYNNNNOOOOPPPPSSSSYYYYSSSS
- _F_o_r_t_r_a_n :
- ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee ccccfffffffftttt3333dddd(((( ssssiiiiggggnnnn,,,, nnnn1111,,,, nnnn2222,,,, nnnn3333,,,, aaaarrrrrrrraaaayyyy,,,, llllaaaa1111,,,, llllaaaa2222,,,, ccccooooeeeeffff ))))
- iiiinnnntttteeeeggggeeeerrrr ssssiiiiggggnnnn,,,, nnnn1111,,,, nnnn2222,,,, nnnn3333,,,, llllaaaa1111,,,, llllaaaa2222
- ccccoooommmmpppplllleeeexxxx aaaarrrrrrrraaaayyyy((((llllaaaa1111,,,,llllaaaa2222,,,,nnnn3333))))
- ccccoooommmmpppplllleeeexxxx ccccooooeeeeffff((((((((nnnn1111++++11115555))))++++((((nnnn2222++++11115555))))++++((((nnnn3333++++11115555))))))))
-
- ssssuuuubbbbrrrroooouuuuttttiiiinnnneeee zzzzfffffffftttt3333dddd(((( ssssiiiiggggnnnn,,,, nnnn1111,,,, nnnn2222,,,, nnnn3333,,,, aaaarrrrrrrraaaayyyy,,,, llllaaaa1111,,,, llllaaaa2222,,,, ccccooooeeeeffff ))))
- iiiinnnntttteeeeggggeeeerrrr ssssiiiiggggnnnn,,,, nnnn1111,,,, nnnn2222,,,, nnnn3333,,,, llllaaaa1111,,,, llllaaaa2222
- ddddoooouuuubbbblllleeee ccccoooommmmpppplllleeeexxxx aaaarrrrrrrraaaayyyy((((llllaaaa1111,,,,llllaaaa2222,,,,nnnn3333))))
- ddddoooouuuubbbblllleeee ccccoooommmmpppplllleeeexxxx ccccooooeeeeffff((((((((nnnn1111++++11115555))))++++((((nnnn2222++++11115555))))++++((((nnnn3333++++11115555))))))))
-
-
- _C :
- ####iiiinnnncccclllluuuuddddeeee <<<<fffffffftttt....hhhh>>>>
- iiiinnnntttt ccccfffffffftttt3333dddd((((iiiinnnntttt ssssiiiiggggnnnn,,,,iiiinnnntttt nnnn1111,,,,iiiinnnntttt nnnn2222,,,,iiiinnnntttt nnnn3333,,,,ccccoooommmmpppplllleeeexxxx ****aaaarrrrrrrraaaayyyy,,,,
- iiiinnnntttt llllaaaa1111,,,, iiiinnnntttt llllaaaa2222,,,, ccccoooommmmpppplllleeeexxxx ****ccccooooeeeeffff))));;;;
- iiiinnnntttt zzzzfffffffftttt3333dddd((((iiiinnnntttt ssssiiiiggggnnnn,,,,iiiinnnntttt nnnn1111,,,,iiiinnnntttt nnnn2222,,,,iiiinnnntttt nnnn3333,,,,zzzzoooommmmpppplllleeeexxxx ****aaaarrrrrrrraaaayyyy,,,,
- iiiinnnntttt llllaaaa1111,,,, iiiinnnntttt llllaaaa2222,,,, zzzzoooommmmpppplllleeeexxxx ****ccccooooeeeeffff))));;;;
-
-
- DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
- ccccfffffffftttt3333dddd and zzzzfffffffftttt3333dddd compute in place the complex Fourier transform of
- complex 3D sequence of size N1xN2xN3. The value F{j1,j2,j3} of the
- transform of the 3D sequence f{i1,i2,i3} is equal to:
- F{j1,j2,j3} = Sum(W1^(i1*j1)*W2^(i2*j2)*W3^(i3*j3*f{i1,i2,i3} ),
- for i[123] =0,...,(N[123]-1)
- W[123] = exp( (Sign*2*sqrt(-1)*PI) / N[123] )
-
-
- SSSSttttoooorrrraaaaggggeeee
- It is assumed that the (N1 x N2 x N3) 3D sequence is stored along
- dimension N1. So the index {i+1,j,l} has an offset of 1 element with
- respect to {i,j,l}, and {i,j+1,k} an offset of _l_a_1 elements with respect
- to {i,j,k}, and {i,j,k+1} an offset of (_l_a_1 * _l_a_2) elements with respect
- to {i,j,k}.
-
-
- AAAAllllggggoooorrrriiiitttthhhhmmmm
- The complex-to-complex 3D Fourier transform is computed with a row-column
- approach.
- - First, N3 2D FFTs complex-to-complex of size N1xN2 are evaluated,
- - then, N1*N2 FFTs complex-to-complex of size N3 are performed,
- stride=la1*la2, and leading_dimension=1.
-
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 1111
-
-
-
-
-
-
- ccccfffffffftttt3333dddd,,,,zzzzfffffffftttt3333dddd((((3333FFFF)))) ccccfffffffftttt3333dddd,,,,zzzzfffffffftttt3333dddd((((3333FFFF))))
-
-
-
- PARAMETERS
- SSSSIIIIGGGGNNNN ---- Integer specifying which sign to be used for the expression of W
- (see above) - must be either +1 or -1.
- Unchanged on exit.
-
- NNNN1111 Integer, the first dimension size of the 3D sequence. Unchanged on
- exit.
-
- NNNN2222 Integer, the second dimension size of the 3D sequence. Unchanged on
- exit.
-
- NNNN3333 Integer, the third dimension size of the 3D sequence. Unchanged on
- exit.
-
- AAAARRRRRRRRAAAAYYYY Array containing the samples of the 3D sequence to be transformed.
- On input, the element {i,j,k} of the sequence is stored as A(i,j,k) in
- _F_o_r_t_r_a_n , and A[i+j*la1+k*la1*la2] in _C. On exit, the array is
- overwritten.
-
- LLLLAAAA1111 Integer, first leading dimension: increment between the samples of
- two consecutive 1D sub-sequences (e.g between {i,j+1,k} and {i,j,k} ).
- Unchanged on exit.
-
- LLLLAAAA2222 Integer, second leading dimension: number of the 1D sub-sequence
- between two consecutive 2D sub-sequences (e.g between {i,j,k+1} and
- {i,j,k}). Unchanged on exit.
-
- CCCCOOOOEEEEFFFFFFFF ---- Array of at least ( (N+15)+(N2+15)+(N3+15) ) elements. On entry
- it contains the Sines/Cosines and factorization of N. COEFF needs to be
- initialized with a call to cfft3di or zfft3di. Unchanged on exit.
-
-
- EEEExxxxaaaammmmpppplllleeee ooooffff CCCCaaaalllllllliiiinnnngggg SSSSeeeeqqqquuuueeeennnncccceeee
- 3D FFT computed on a complex sequence of size 100x64x125.
- _F_o_r_t_r_a_n
- complex array(0:100-1,0:64-1,0:125-1)
- complex coeff(100+15 + 64+15 + 125+15)
- call cfft3di( 100, 64, 125, coeff)
- call cfft3d( -1, 100, 64, 125, array, 100, 64, coeff)
-
- _C
- #include <fft.h>
- complex array[100*64*125], *coeff;
- coeff = cfft3di( 100, 64, 125, NULL);
- cfft3d( -1, 100, 64, 125, array, 100, 64, coeff);
-
- SSSSEEEEEEEE AAAALLLLSSSSOOOO
- fft, cfft3di, zfft3di
-
-
-
-
-
-
-
- PPPPaaaaggggeeee 2222
-
-
-
-